package com.example.myaku.IPutil;

import android.app.Application;

import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;

import java.util.ArrayList;
import java.util.List;

/**
 * HomeViewModel 用于在 Fragment 生命周期变化时保留扫描到的 IP 地址列表。
 * 避免每次进入页面都重新扫描，提升用户体验和性能。
 * 暂未使用该方法，重新进入页面获取到的ipList是空的
 */
public class HomeViewModel extends AndroidViewModel {

    // 使用 MutableLiveData 保存 IP 列表，并通过 LiveData 对外暴露
    private final MutableLiveData<List<String>> ipList = new MutableLiveData<>(new ArrayList<>());

    public HomeViewModel(@NonNull Application application) {
        super(application);
    }

    /**
     * 获取当前 IP 列表的 LiveData，用于观察数据变化并刷新 UI
     */
    public LiveData<List<String>> getIpList() {
        return ipList;
    }

    /**
     * 添加一个新的 IP 地址到列表中（避免重复）
     *
     * @param ip 新发现的 IP 地址
     */
    public void addIp(String ip) {
        List<String> currentList = ipList.getValue();
        if (currentList != null && !currentList.contains(ip)) {
            List<String> newList = new ArrayList<>(currentList);
            newList.add(ip);
            ipList.postValue(newList);
        }
    }

    /**
     * 手动设置整个 IP 列表（可用于恢复历史记录等场景）
     *
     * @param list 新的 IP 列表
     */
    public void setIpList(List<String> list) {
        ipList.postValue(new ArrayList<>(list));
    }

    /**
     * 清空当前 IP 列表（可选：用于“重置”功能）
     */
    public void clearIpList() {
        List<String> newList = new ArrayList<>();
        ipList.postValue(newList);
    }

    /**
     * 移除指定 IP（可选：用于支持“删除”操作）
     *
     * @param ip 要移除的 IP 地址
     */
    public void removeIp(String ip) {
        List<String> currentList = ipList.getValue();
        if (currentList != null && currentList.contains(ip)) {
            List<String> newList = new ArrayList<>(currentList);
            newList.remove(ip);
            ipList.postValue(newList);
        }
    }
}
